<html>
    <head>
        <title>MATLAB xUnit Release History</title>
    </head>
    
    <body>
        <h1>MATLAB xUnit Release History</h1>
        
        <h3>3.1 19-Nov-2010</h3>
        <ul>
            <li>
                Add -logfile option to runtests.
            </li>
            <li>
                Allow test names to be passed to runtests as a cell array of strings.
            </li>
            <li>
                Add test suite name and execution date to output of runtests.
            </li>
            <li>
                Added warning message if function-handle-based test file has a setup function
                that returns more than one output argument.
            </li>
            <li>
                Fix bug related to handling subfunction test files in packages.
            </li>
            <li>
                Fix TestSuite.fromPackageName to find tests inside subpackages.
            </li>
            <li>
                Correct text in exTestCaseSearching.m to show that test files and functions
                can begin or end with "test" or "Test".
            </li>
        </ul>
        
        <h3>3.0.2 30-Jul-2010</h3>
        <ul>
            <li>
                Fixed bug that caused TestCase subclasses in a test package to
                be executed twice in some versions of MATLAB.
            </li>
            <li>
                Documented the <tt>out = runsuite(...)</tt> syntax.
            </li>
            <li>
                Added home doc links to the various doc pages.
            </li>
        </ul>
        
        <h3>3.0.1 16-Jun-2010</h3>
        <p>
            Fixed handling of TestCase subclasses in a test package.
        </p>
        
        <h3>3.0 12-Jun-2010</h3>
        <ul>
            <li> Added capability to run tests stored inside packages. </li>
            <li> <tt>runtests</tt> errors if no test cases are found instead
            of silently passing. </li>
            <li> Accept function names that end in "test" or "Test" as test functions. </li>
            <li> In <tt>assertElementsAlmostEqual</tt> and <tt>assertVectorsAlmostEqual</tt>, change the 
                default <tt>floor_tol</tt> value to <tt>sqrt(eps)</tt> instead of <tt>eps</tt>. This makes the assertion
            a bit more forgiving when comparing numbers very close to 0.</li>
            <li> Added -verbose option to <tt>runtests</tt>. </li>
            <li> Fixed handling of message strings containing sprintf-style control characters
            in the assert*.m functions. </li>
        </ul>
                
        <h3>2.0.1 04-Aug-2009</h3>
        <p>
            Corrected errors in assertElementsAlmostEqual and assertVectorsAlmostEqual
            related to NaN and Inf inputs.  assertElementsAlmostEqual now properly
            asserts when one input is finite and the other is infinite.
            assertVectorsAlmostEqual now asserts whenever any input element is NaN
            or infinite.  The behavior of xunit.utils.compareFloats has been changed
            to match.
        </p>
        
        <h3>2.0 05-June-2009</h3>
        <ul>
            <li>
                The name of the package has been changed to "MATLAB xUnit Test Framework."
                The command-line test runner is now called <tt>runtests</tt>.  The utilities
                package is now called <tt>xunit.utils</tt>.  If you want to continue using
                the old command-line test runner (<tt>mtest</tt>) and utilities package
                (<tt>mtest.utils</tt>), then put the <tt>obsolete</tt> directory on the
                MATLAB path.
            </li>
            <li>
                The assertion functions <tt>assertEqual</tt>, <tt>assertElementsAlmostEqual</tt>,
                and <tt>assertVectorsAlmostEqual</tt> now print more information about the input
                values in the case of an assertion failure.
            </li>
            <li>
                A new assertion function, <tt>assertFilesEqual</tt>, has been added.
            </li>
            <li>
                The command-line test runner, <tt>runtests</tt>, now supports multiple directory
                names.
            </li>
            <li>
                The assertion function <tt>assertAlmostEqual</tt> has been deprecated. Use
                <tt>assertElementsAlmostEqual</tt> and <tt>assertVectorsAlmostEqual</tt>
                instead. If you want to continue using <tt>assertAlmostEqual</tt>, then
                put the <tt>obsolete</tt> directory on the MATLAB path.
            </li>
        </ul>
        
        <h3>1.1.3 20-May-2009</h3>
        <p>
            Remove the LICENSE.txt file because the open source BSD license is
            now supplied automatically by the MATLAB Central File Exchange.
            There are no functional changes in this version.
        </p>
        
        <h3>1.1.2 02-Apr-2009</h3>
        <p>
            This release fixes a bug with <tt>assertVectorsAlmostEqual</tt> when
            the caller provided a custom message. When the function errored out
            because the tolerance was exceeded, the function would issue a
            different error message than expected.
        </p>
        
        <h3>1.1.1 16-Mar-2009</h3>
        <p>
            This release fixes a problem when calling mtest with no input
            arguments. Previously, it was not limiting its test-case discovery
            to TestCase subclasses and ordinary M-files beginning with "test" 
            or "Test" as documented.
        </p>        
        
        <p>
            This release also integrates the MTEST documentation with the MATLAB
            Help Browser.
        </p>

        <h3>1.1 11-Mar-2009</h3>
        <p>
            This release adds new tools for performing floating-point
            comparisons.  Using the new assertion functions
            <tt>assertElementsAlmostEqual</tt> and 
            <tt>assertVectorsAlmostEqual</tt>, you can perform both
            absolute and relative tolerance comparisons, either elementwise
            or in a vector L2-norm fashion.
        </p>

        <p>
            The previous floating-point comparison function,
            <tt>assertAlmostEqual</tt>, is still available, but its
            use is discouraged.
        </p>
         
        <h3>1.0 30-Jan-2009</h3>
        <p>
            This release, the first to be posted on the MATLAB Central File
            Exchange, includes a refactoring of TestCase and TestSuite to use
            the composite design pattern.  Both classes now subclass the 
            abstract class TestComponent, and the individual items contained
            in a TestSuite object are TestComponent objects.  That means
            a TestSuite object can contain both TestSuite objects and 
            TestCase objects. 
        </p>
        
        <p>
            TestSuites are now built up hierarchically.  All the test cases 
            in a subfunction-based test M-file become a test suite, which in
            turn can be part of a test suite for an entire test directory.
        </p>
        
        <p>
            The mtest driver function can now take the name of a directory,
            in which case it will automatically discover and run all the test
            cases in that directory.
        </p>
        
        <p>
            The old TestRunObserver class has become the abstract TestRunMonitor
            class, with subclasses TestRunLogger and CommandWindowTestRunDisplay.
        </p>
        
        <p>
            TestCaseInDir has been modified to do a directory change before
            executing the test case. The new class TestCaseWithAddPath makes
            a temporary path addition before executing the test case.
        </p>
        
        <p>
            Subfunction-based test M-files written for one of the alpha versions
            of MTEST need to be revised so that the output variable name is 
            "test_suite", and so that the first line of code calls the script
            "initTestSuite".
        </p>
        
        <h3>0.9 12-Sep-2008</h3>
        <p>
            This release is an extensive update that provides simpler ways of 
            writing and running test cases.
        </p>
        <ul>
            <li>
                The new function mtest automatically finds and runs all test
                cases in the current directory.
            </li>
            <li>
                Test cases can be written as simple M-file functions.
            </li>
            <li>
                Multiple test cases can be defined in a single M-file by using
                subfunctions.
            </li>
            <li>
                Many new documentation examples have been provided, including a
                "Quick Start" example intended to enable users to write and
                run their first tests in just a few minutes.
            </li>
        </ul>
        
        
        <h3>0.8.1 17-Mar-2008</h3>
        <ul>
            <li>
                Some of the sample TestCase classes were missing classdef lines.  
                FIXED
            </li>
            <li>
                Now using dot method invocation syntax in examples and doc.
            </li>
            <li>
                Minor edits to HTML doc (munit_doc.html).
            </li>
            <li>
                Edited munit_doc.html by hand to clean up command-window links.
            </li>
        </ul>
        
        <h3>0.8 15-Mar-2008</h3>
        <ul>
            <li>
                Limited initial distribution for review and comment.
            </li>
        </ul>
    </body>
</html>
